\documentclass[12pt]{article}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{pdfpages}
\usepackage{fancyhdr}
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{listings}
\usepackage[normalem]{ulem}
\usepackage[font=footnotesize,format=plain,labelfont=bf,up,textfont=it,up,justification=centering]{caption}
\usepackage[hidelinks]{hyperref}
\usepackage{pdflscape}
\usepackage{colortbl}
\setlength{\textwidth}{481pt} % Largeur de la zone de texte (17cm)
\setlength{\oddsidemargin}{0pt} % Marge gauche sur pages impaires
\setlength{\evensidemargin}{0pt} % Marge gauche sur pages paires
\setlength{\topmargin}{0pt} % Pas de marge en haut
\setlength{\headheight}{12pt} % Haut de page
\setlength{\headsep}{25pt} % Entre le haut de page et le texte
\setlength{\footskip}{30pt} % Bas de page + séparation
\setlength{\textheight}{620pt} % Hauteur de la zone de texte (25cm)
\setlength{\parindent}{0cm}
\setstretch{1.2}

\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{3}
\makeatletter
\newcounter {subsubsubsection}[subsubsection]
\renewcommand\thesubsubsubsection{\thesubsubsection .\@alph\c@subsubsubsection}
\newcommand\subsubsubsection{\@startsection{subsubsubsection}{4}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\normalsize\bfseries}}
\newcommand*\l@subsubsubsection{\@dottedtocline{3}{10.0em}{4.1em}}
\newcommand*{\subsubsubsectionmark}[1]{}
\makeatother

%Page de garde
\makeatletter
\def\clap#1{\hbox to 0pt{\hss #1\hss}}%
\def\ligne#1{%
\hbox to \hsize{%
\vbox{\centering #1}}}%
\def\haut#1#2#3{%
\hbox to \hsize{%
\rlap{\vtop{\raggedright #1}}%
\hss
\clap{\vtop{\centering #2}}%
\hss
\llap{\vtop{\raggedleft #3}}}}%
\def\bas#1#2#3{%
\hbox to \hsize{%
\rlap{\vbox{\raggedright #1}}%
\hss
\clap{\vbox{\centering #2}}%
\hss
\llap{\vbox{\raggedleft #3}}}}%
\def\maketitle{%
\thispagestyle{empty}\vbox to \vsize{%
\haut{}{\@blurb}{}
\vfill
\vspace{1cm}
\begin{flushleft}
%\usefont{OT1}{ptm}{m}{n}
\huge \@title
\end{flushleft}
\par
\hrule height 3pt
\par
\begin{flushright}
%\usefont{OT1}{phv}{m}{n}
\large \@author
\par
\end{flushright}
\vspace{1cm}
\vfill
\vfill
\bas{}{\@location\ - \@date}{}
}%
\cleardoublepage
}
\def\date#1{\def\@date{#1}}
\def\author#1{\def\@author{#1}}
\def\title#1{\def\@title{#1}}
\def\location#1{\def\@location{#1}}
\def\blurb#1{\def\@blurb{#1}}
\date{\today}
\author{}
\title{}
\blurb{}
\makeatother
\title{Acceptance Testing\\\Large MeteoCal}
\author{Adrien \textsc{Bestel}\\Jorge \textsc{Vera}\\}
\location{Milano}




\date\today

\begin{document}
\newpage
\begin{figure}[t]
        \includegraphics[height = 20mm]{logo.png}
\end{figure}
\vspace{-15cm}
\maketitle
\thispagestyle{empty}
\newpage
\tableofcontents


\newpage
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0.01mm}
\lhead{\footnotesize Adrien \textsc{Bestel} - Jorge \textsc{Vera}}
\rhead{\footnotesize Acceptance Testing - MeteoCal}

\lstset{language=Java}

\section{Introduction}
The goal of this acceptance testing document is to provide feedback on an implementation of the MeteoCal project. This feedback will target different aspects of the project, from the requirements analysis to the behavior of the software itself.

\vspace{0.5cm}

The project we had to test can be found at this url : \\\url{https://code.google.com/p/meteocal-fusari-gianotti/}.

\newpage
\section{Environment}
The tests have been done on a singular working environment, that might lead to small differences in terms of executions or results. Our working operating system was \textbf{Windows 10 Technical Preview - build 9926}, with \textbf{MySQL Community Server 6.2} and \textbf{GlassFish 4.1}. The browser we used was \textbf{Firefox 35.0.1}.

\newpage
\section{Tests}
These tests have been extracted from the subject, the RASD and the Design Document of the group.

\subsection{Register}
\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Register a new user\\
		\hline
		\textbf{Page} & Registration Page\\
		\hline
		\textbf{Input} & First Name, Last Name, Email, Password, Visibility of Calendar\\
		\hline
		\textbf{Expected Output} & The system creates the user and saves its information in the database.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The system returns on the home page.\\
		\hline
		\textbf{Observations} & /\\
		\hline
		\textbf{Managed Errors} & /\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & /\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Log In}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Log into the system.\\
		\hline
		\textbf{Page} & Home Page.\\
		\hline
		\textbf{Input} & Email and password of a registered user.\\
		\hline
		\textbf{Expected Output} & The system authenticates the user.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The user is redirected to its profile page.\\
		\hline
		\textbf{Observations} & The URL of the profile page ( \url{http://localhost:8080/meteoCal/faces/user/homepage.xhtml} ) could be changed to something a bit simpler (for example by suppressing the /faces/).\\
		\hline
		\textbf{Managed Errors} & Wring username / wrong password.\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{yellow!25}Partial Success\\
		\hline
		\textbf{Issues} & A logged in user can return to the Home Page and access once again the log in form. This will not work since the user is already logged in. There should be a filter on the home page to redirect any logged in user to its profile automatically. This is mildly problematic since the only way to go back to the profile page is to change the URL manually.\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Create Event}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Create a new event.\\
		\hline
		\textbf{Page} & Create event page.\\
		\hline
		\textbf{Input} & Name of the event, (optional) event description, event type, begin date, end date, city, country address and participants list.\\
		\hline
		\textbf{Expected Output} & The system creates a new event and saves it in the database. Invitations are sent to invited users.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The user is redirected to its profile page. The event is saved in the calendar.\\
		\hline
		\textbf{Observations} & The participants list is a bit weird. We have to know the mail address of the person we want to invite, and the field to add a participant is separated from the actual list by a line so I thought the field dedicated to the address was in fact the participant list. It's not bad but the first time using it is a bit troubling.\\
		\hline
		\textbf{Managed Errors} & Errors (missing or bad data) are well managed when you click on the "Save" button.\\
		\hline
		\textbf{Unmanaged Errors} & Trying to validate the form with the enter key redirects to the profile page and we do not really know what has happened.\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & In the RASD, it is assumed that a user can not go to various at the same time while it is possible on the application. Another assumption is that a user with a private calendar can not create a public event, but is is possible in the application too. These issues do not seem very important since these assumptions seem a little too strict.\\
		\hline
		\textbf{Notes} & It might not be perfect but it still works pretty well.\\
		\hline
	\end{tabular}
\end{center}

\subsection{Update Event}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Update a owned event already created.\\
		\hline
		\textbf{Page} & Event page, event modification page.\\
		\hline
		\textbf{Input} & Name of the event, (optional) event description, event type, begin date, end date, city, country address and participants list.\\
		\hline
		\textbf{Expected Output} & The system update the data in the database.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The user is redirected to its profile page, that shows the updated event in the calendar.\\
		\hline
		\textbf{Observations} & /\\
		\hline
		\textbf{Managed Errors} & Same as 3.3.\\
		\hline
		\textbf{Unmanaged Errors} & Same as 3.3.\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & /\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Delete Event}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Delete a owned event.\\
		\hline
		\textbf{Page} & Event page.\\
		\hline
		\textbf{Input} & /\\
		\hline
		\textbf{Expected Output} & The event is deleted from the database.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The user is redirected to its profile page and there is no sign of the event anymore.\\
		\hline
		\textbf{Observations} & /\\
		\hline
		\textbf{Managed Errors} & /\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & /\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Accept/Decline Invitation}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Accept an invitation.\\
		\hline
		\textbf{Page} & Notification page.\\
		\hline
		\textbf{Input} & The answer to the invitation.\\
		\hline
		\textbf{Expected Output} & The systems updates the database to reflect the answer of the user\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The user goes back to the notification page. If the user has accepted the invitation and goes back to its profile page, the event is present on its calendar.\\
		\hline
		\textbf{Observations} & The notifications are not really clear until you open them.\\
		\hline
		\textbf{Managed Errors} & /\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & /\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Make Calendar Public/Private}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Change the visibility of a profile.\\
		\hline
		\textbf{Page} & Profile settings.\\
		\hline
		\textbf{Input} & The new visibility.\\
		\hline
		\textbf{Expected Output} & The database is updated with the new visibility of the profile.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The current visibility is changed on the settings page.\\
		\hline
		\textbf{Observations} & /\\
		\hline
		\textbf{Managed Errors} & /\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & There is no link to go back to the profile page.\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Forecast Management}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Check the Forecast on events.\\
		\hline
		\textbf{Page} & Event page.\\
		\hline
		\textbf{Input} & The city/country of the event.\\
		\hline
		\textbf{Expected Output} & The forecast is generated automatically periodically and is fetched from the database when a user accesses an event page.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The forecast is shown in the event page.\\
		\hline
		\textbf{Observations} & /\\
		\hline
		\textbf{Managed Errors} & Cities that do not exist just don't produce any forecast.\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & /\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}

\subsection{Bad Weather Management}

\begin{center}
	\begin{tabular}{|r|p{12cm}|}
		\hline
		\textbf{Objective} & Alert the users when an outdoor event has a bad weather forecast and give a suggestion for another date.\\
		\hline
		\textbf{Page} & Notification page.\\
		\hline
		\textbf{Input} & The owner has to provide an answer (accept or decline the new date).\\
		\hline
		\textbf{Expected Output} & The system gives a new date, and if the owner accepts it, the event is updated.\\
		\hline
		\textbf{Obtained Output} & As expected.\\
		\hline
		\textbf{Result} & The user goes back to the notification page.\\
		\hline
		\textbf{Observations} & /\\
		\hline
		\textbf{Managed Errors} & /\\
		\hline
		\textbf{Unmanaged Errors} & /\\
		\hline
		\textbf{Outcome} & \cellcolor{green!25}Success\\
		\hline
		\textbf{Issues} & /\\
		\hline
		\textbf{Notes} & /\\
		\hline
	\end{tabular}
\end{center}


\newpage
\section{Conclusion}
As a resolution for the acceptance testing, we can say that the software is doing what was told to be doing, just to point out the partial success of the login. On the other side, what is not really important but we would like to tell, by checking on the RASD, the creation of public events is not well described, there is an assumption that in the RASD we disagree that is that the public events have to be created by a user with a public calendar. But actually what we thought as wrong, was fixed on the project implementation.
\end{document}